/**
 * 上下文类 - 策略模式中的上下文
 * 
 * 持有一个Strategy的引用，允许客户端指定要使用的具体策略
 * 提供接口供客户端调用，而不是直接与具体策略交互
 */
package com.mkx.behaviorals.strategy;

public class Context {
    // 持有一个策略对象的引用
    private Strategy strategy;
    
    /**
     * 设置策略
     * 
     * @param strategy 要使用的策略
     */
    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }
    
    /**
     * 执行策略
     * 
     * @param data 要处理的数据
     * @return 处理结果
     */
    public Object executeStrategy(Object data) {
        if (strategy != null) {
            return strategy.execute(data);
        }
        throw new IllegalStateException("策略未设置");
    }
}